由於使用 Windows PowerShell 關閉電腦以及重新啟動電腦的操作是類似的,差別在於一個不需要再送 AC 電源給電腦,另外一個要再重新送 AC 電源,所以一起解說。
強而有力的 Windows PowerShell 系列文章列表如下:
http://ithelp.ithome.com.tw/event/ironmanarticle2/id/20005121
一般來說,電腦關機的工具程式也可以將電腦重新啟動,反之亦然。這是因為,電腦關機和重新啟動在本質上,是屬於同一類型的工作。所以只要了解關閉電腦的工具所提供的參數,就可以用同樣的方式搭配適當的參數來重新啟動電腦。關機跟重新開機的權限要夠,才能順利進行操作。如果是在 Windows Vista 之後的 Windows 上,要記得用**「以系統管理員身分執行」**的方式開啟 Windows PowerShell 並執行命令才行。
如果電腦有安裝終端機伺服器的話,可以使用 TSShutdn.exe 命令列工具,讓具備系統管理員身分的使用者得以關閉電腦(電腦需要支援進階電源管理的軟體控制指令)或重新啟動電腦:
# 關閉電腦
TSShutdn /PowerDown
# 重新啟動電腦
TSShutdn /Reboot
電腦預設都會有 Shutdown.exe 工具,搭配關閉電腦選項的參數 -s,或是重新啟動的參數 -r:
# 關閉電腦
shutdown -s
# 重新啟動電腦
shutdown -r
微軟網站的 PsTools 中的 PsShutdown.exe,也有相對應的參數可用:
# 關閉電腦
C:\PsTools\PsShutdown -k
# 重新啟動電腦
C:\PsTools\PsShutdown -o
請注意:
使用 WMI 所提供的 Win32_OperatingSystem 類別,呼叫 Win32Shutdown 方法,搭配不同的旗標也可關閉電腦(用 1 旗標)或重新啟動電腦(用 2 旗標):
$strComputer = "."
# 關閉電腦
(Get-WmiObject -Class Win32_OperatingSystem -ComputerName $strComputer).Win32Shutdown(1)
# 重新啟動電腦
(Get-WmiObject -Class Win32_OperatingSystem -ComputerName $strComputer).Win32Shutdown(2)
執行上面的指令可能會有像這樣的訊息出現:
呼叫 "Win32Shutdown" 時發生例外狀況: "Privilege not held. "
位於 行:1 字元:75
+ (Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown <<<< (1)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : WMIMethodException
可改用下面的指令:
$strComputer = "."
# 關閉電腦
$OS = Get-WmiObject Win32_OperatingSystem -ComputerName $strComputer
$OS.psbase.Scope.Options.EnablePrivileges = $true
$OS.win32shutdown(1)
# 重新啟動電腦
$OS.win32shutdown(2)
最後一種方式是使用 Windows PowerShell 所提供的 Stop-Computer 跟 Restart-Computer cmdlet:
$strComputer = "."
# 關閉電腦
Stop-Computer -ComputerName $strComputer
# 重新啟動電腦
Restart-Computer -ComputerName $strComputer